include standard_colors.txt
//Source: http://www.reade.com  & http://chemistry.about.com
DATA   1, Hydrogen     , H  ,   1.0079,  1,  1, 2
DATA   2, Helium       , He ,   4.0026, 18,  1, 0
DATA   3, Lithium      , Li ,   6.941,   1,  2, 4
DATA   4, Beryllium    , Be ,   9.0122,  2,  2, 5
DATA   5, Boron        , B  ,  10.811,  13,  2, 3
DATA   6, Carbon       , C  ,  12.0107, 14,  2, 2
DATA   7, Nitrogen     , N  ,  14.0067, 15,  2, 2
DATA   8, Oxygen       , O  ,  15.9994, 16,  2, 2
DATA   9, Fluorine     , F  ,  18.9984, 17,  2, 1
DATA  10, Neon         , Ne ,  20.1797, 18,  2, 0
DATA  11, Sodium       , Na ,  22.9898,  1,  3, 4
DATA  12, Magnesium    , Mg ,  24.3050,  2,  3, 5
DATA  13, Aluminum     , Al ,  26.9815, 13,  3, 7
DATA  14, Silicon      , Si ,  28.0855, 14,  3, 3
DATA  15, Phosphorus   , P  ,  30.9738, 15,  3, 2
DATA  16, Sulfur       , S  ,  32.065,  16,  3, 2
DATA  17, Chlorine     , Cl ,  35.453,  17,  3, 1
DATA  18, Argon        , Ar ,  39.948,  18,  3, 0
DATA  19, Potassium    , K  ,  39.0983,  1,  4, 4
DATA  20, Calcium      , Ca ,  40.078,   2,  4, 5
DATA  21, Scandium     , Sc ,  44.9559,  3,  4, 6
DATA  22, Titanium     , Ti ,  47.867,   4,  4, 6
DATA  23, Vanadium     , V  ,  50.9415,  5,  4, 6
DATA  24, Chromium     , Cr ,  51.9961,  6,  4, 6
DATA  25, Manganese    , Mn ,  54.9380,  7,  4, 6
DATA  26, Iron         , Fe ,  55.845,   8,  4, 6
DATA  27, Cobalt       , Co ,  58.9332,  9,  4, 6
DATA  28, Nickel       , Ni ,  58.6934, 10,  4, 6
DATA  29, Copper       , Cu ,  63.546,  11,  4, 6
DATA  30, Zinc         , Zn ,  65.409,  12,  4, 6
DATA  31, Gallium      , Ga ,  69.723,  13,  4, 7
DATA  32, Germanium    , Ge ,  72.64,   14,  4, 3
DATA  33, Arsenic      , As ,  74.9216, 15,  4, 3
DATA  34, Selenium     , Se ,  78.96,   16,  4, 2
DATA  35, Bromine      , Br ,  79.904,  17,  4, 1
DATA  36, Krypton      , Kr ,  83.798,  18,  4, 0
DATA  37, Rubidium     , Rb ,  85.4678,  1,  5, 4
DATA  38, Strontium    , Sr ,  87.62,    2,  5, 5
DATA  39, Yttrium      , Y  ,  88.9059,  3,  5, 6
DATA  40, Zirconium    , Zr ,  91.224,   4,  5, 6
DATA  41, Niobium      , Nb ,  92.906,   5,  5, 6
DATA  42, Molybdenum   , Mo ,  95.94,    6,  5, 6
DATA  43, Technetium   , Tc ,  98.9072,  7,  5, 6
DATA  44, Ruthenium    , Ru , 101.07,    8,  5, 6
DATA  45, Rhodium      , Rh , 102.905,   9,  5, 6
DATA  46, Palladium    , Pd , 106.42,   10,  5, 6
DATA  47, Silver       , Ag , 107.8682, 11,  5, 6
DATA  48, Cadmium      , Cd , 112.411,  12,  5, 6
DATA  49, Indium       , In , 114.818,  13,  5, 7
DATA  50, Tin          , Sn , 118.710,  14,  5, 7
DATA  51, Antimony     , Sb , 121.760,  15,  5, 3
DATA  52, Tellurium    , Te , 127.60,   16,  5, 3
DATA  53, Iodine       , I  , 126.904,  17,  5, 1
DATA  54, Xenon        , Xe , 131.293,  18,  5, 0
DATA  55, Cesium       , Cs , 132.9055,  1,  6, 4
DATA  56, Barium       , Ba , 137.327,   2,  6, 5
DATA "  57-71", " "    , " ",   " "   ,  3,  6, 8
DATA  57, Lanthanum    , La , 138.9055,  3,  8, 8
DATA  58, Cerium       , Ce , 140.116,   4,  8, 8
DATA  59, Praseodymium , Pr , 140.9076,  5,  8, 8
DATA  60, Neodymium    , Nd , 144.242,   6,  8, 8
DATA  61, Promethium   , Pm , 144.9127,  7,  8, 8
DATA  62, Samarium     , Sm , 150.360,   8,  8, 8
DATA  63, Europium     , Eu , 151.964,   9,  8, 8
DATA  64, Gadolinium   , Gd , 157.25,   10,  8, 8
DATA  65, Terbium      , Tb , 158.9254, 11,  8, 8
DATA  66, Dysprosium   , Dy , 162.500,  12,  8, 8
DATA  67, Holmium      , Ho , 164.930,  13,  8, 8
DATA  68, Erbium       , Er , 167.259,  14,  8, 8
DATA  69, Thulium      , Tm , 168.9342, 15,  8, 8
DATA  70, Ytterbium    , Yb , 173.04,   16,  8, 8
DATA  71, Lutetium     , Lu , 174.967,  17,  8, 8
DATA  72, Hafnium      , Hf , 178.49,    4,  6, 6
DATA  73, Tantalum     , Ta , 180.9479,  5,  6, 6
DATA  74, Tungsten     , W  , 183.84,    6,  6, 6
DATA  75, Rhenium      , Re , 186.207,   7,  6, 6
DATA  76, Osmium       , Os , 190.23,    8,  6, 6
DATA  77, Iridium      , Ir , 192.217,   9,  6, 6
DATA  78, Platinum     , Pt , 195.084,  10,  6, 6
DATA  79, Gold         , Au , 196.9666, 11,  6, 6
DATA  80, Mercury      , Hg , 200.59,   12,  6, 6
DATA  81, Thallium     , Tl , 204.3833, 13,  6, 7
DATA  82, Lead         , Pb , 207.2,    14,  6, 7
DATA  83, Bismuth      , Bi , 208.9804, 15,  6, 7
DATA  84, Polonium     , Po , 208.9824, 16,  6, 3
DATA  85, Astatine     , At , 209.9871, 17,  6, 1
DATA  86, Radon        , Rn , 222.0176, 18,  6, 0
DATA  87, Francium     , Fr , 223.0197,  1,  7, 4
DATA  88, Radium       , Ra , 226.0254,  2,  7, 5
DATA "    89-103", " " , " ",   " "   ,  3,  7, 9
DATA  89, Actinium     , Ac , 227.0278,  3,  9, 9
DATA  90, Thorium      , Th , 232.0381,  4,  9, 9
DATA  91, Protactinium , Pa , 231.0359,  5,  9, 9
DATA  92, Uranium      , U  , 238.0289,  6,  9, 9
DATA  93, Neptunium    , Np , 237.0482,  7,  9, 9
DATA  94, Plutonium    , Pu , 244.0642,  8,  9, 9
DATA  95, Americium    , Am , 243.0614,  9,  9, 9
DATA  96, Curium       , Cm , 247.0703, 10,  9, 9
DATA  97, Berkelium    , Bk , 247.0703, 11,  9, 9
DATA  98, Californium  , Cf , 251.0796, 12,  9, 9
DATA  99, Einsteinium  , Es , [254]   , 13,  9, 9
DATA 100, Fermium      , Fm , 257.0951, 14,  9, 9
DATA 101, Mendelevium  , Md , 258.1,    15,  9, 9
DATA 102, Nobelium     , No , 259.1009, 16,  9, 9
DATA 103, Lawrencium   , Lr , [262]   , 17,  9, 9
DATA 104, Rutherfordium, Rf , [261],     4,  7, 6
DATA 105, Dubnium      , Db , [262],     5,  7, 6
DATA 106, Seaborgium   , Sg , [266],     6,  7, 6
DATA 107, Bohrium      , Bh , [264],     7,  7, 6
DATA 108, Hassium      , Hs , [269],     8,  7, 6
DATA 109, Meitnerium   , Mt , [268],     9,  7, 6
DATA 110, Darmstadtium , Ds , [269],    10,  7, 6
DATA 111, Roentgenium  , Rg , [272],    11,  7, 6
DATA 112, Copernicium  , Cn , [277],    12,  7, 6
DATA 113, Ununtrium    , Uut, unknown , 13,  7, 7
DATA 114, Ununquadium  , Uuq, [289]   , 14,  7, 7
DATA 115, Ununpentium  , Uup, unknown , 15,  7, 7
DATA 116, Ununhexium   , Uuh, [298]   , 16,  7, 7
DATA 117, Ununseptium  , Uus, unknown , 17,  7, 1
DATA 118, Ununoctium   , Uuo, unknown , 18,  7, 0

200 DATA "Noble\nGas",        "Halogens"
    DATA "Nonmetals",         "Semimetals"
    DATA "Alkali\nMetal",     "Alkaline\nEarth"
    DATA "Transition\nMetal", "Basic\nMetal"
    DATA "Lanthanides",       "Actinides"

dim symbol$(120), atomic_num$(120), name$(120), weight$(120)
dim colors (10), categories$ (10)

pink = setcolor (255, 200, 200)
colors (0) = gold      // noble gases
colors (1) = yellow    // halogens
colors (2) = copenhagen_blue // nonmetals
colors (3) = green     // semimetals
colors (4) = pink      // alkali metals
colors (5) = lilac     // alkaline earth
colors (6) = turquoise // transition metals
colors (7) = orange    // Basic Metal
colors (8) = green     // Lanthanide Series
colors (9) = lilac     // Actinide Series

graph width=7.5, height=4.3, equalscales, noaxes, nogrid
graph includeyaxis=0
text x=150,y=160, datasize=17,string="Periodic Table\nof the Elements"

for i = 1 to 118
read atomic_num$(i), name$(i), symbol$(i), weight$(i), column, row, type
rc = draw_box ()
next
text x=38,y=27,string="Lanthanide\nSeries",datasize=7
text x=38,y=7, string="Actinide\nSeries",  datasize=7

// Draw Legend

restore 200
for i=0 to 9
read categories$(i)
rc = draw_legend_box ()
next
end

//------------------------------------------------
def draw_box () = gosub 10000
10000
// A row is 20 high, a column is 20 wide
extra = 0
if row > 7 then extra = 5
l = column*20
r = (column+1)*20
t = 200 - row * 20 - extra
b = 200 - (row+1) * 20 - extra
shape left=l, right=r
shape top = t, bottom = b

if type <= 7 then shape filltype = solid
if type > 7 then shape filltype=hatch, hatch=right
shape fillcolor=colors (type)
shape rectangle 
text datasize=10,  string = symbol$(i), x=l+10, y = t - 12
text datasize=5,   string = atomic_num$(i), x=l+5, y=t-4
text datasize=3.5, string = name$(i), x=l+10, y=t-16
text datasize=3.5, string = weight$(i), x=l+10, y=t-19
return
//------------------------------------------------
def draw_legend_box () = gosub 20000
20000
// A box is 10 high, a box is 20 wide + 3 spaces

l = i*23 + 100
r = l+20
t = -10
b = t-10
shape left=l, right=r
shape top =t, bottom = b

if i <= 7 then shape filltype = solid
if i > 7 then shape filltype=hatch, hatch=right
shape fillcolor=colors (i)
shape rectangle 
text datasize=3.5, string = categories$(i), x=l+10, y=b, y2=t
return